package 剑指专题.动态规划;


/*
 * Author：江松
 * Date：2023/3/21 20:17
 *
 将数字翻译成字符串:
 自己想的：定义dp(i)为前i个字符的组成（计数）
 划分：从前1个，从前2个转移
 讨论特殊情况
 */

public class Main9 {
    public int solve (String nums) {
        int len=nums.length();
        if(len<1)return 0;
        if(len==1&&nums.charAt(0)=='0')return 0;
        int dp[]=new int[len+1];
        dp[0]=1;
        dp[1]=1;
        for(int i=2;i<=len;++i){
            char now=nums.charAt(i-1);
            char last=nums.charAt(i-2);
            int val=(last-'0')*10+now-'0';
            //0,30,40..
            if(val==0||(val>26&&val%10==0))return 0;
            //10,20
            if(val>0&&val<=26&&now=='0'){
                dp[i]=dp[i-2];
            }else if(val>0&&val<=26&&now!='0'&&last!='0'){
                dp[i]=dp[i-1]+dp[i-2];
            }else {//09,78,27
                dp[i]=dp[i-1];
            }
        }
        return dp[len];
    }
}
